package com.bpmn.common.enums;

import cn.hutool.core.util.StrUtil;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * 任务状态枚举
 *
 * @author rain
 */
@Getter
@AllArgsConstructor
public enum TaskStatusEnum {

    RUNNING("running", "审批中"),
    APPROVE("approve", "审批通过");

    /**
     * 状态
     */
    private final String status;

    /**
     * 描述
     */
    private final String desc;

    /**
     * 任务业务状态
     *
     * @param status 状态
     */
    public static String findByStatus(String status) {
        if (StrUtil.isBlank(status)) {
            return StrUtil.EMPTY;
        }
        return Arrays.stream(TaskStatusEnum.values())
                .filter(statusEnum -> statusEnum.getStatus().equals(status))
                .findFirst()
                .map(TaskStatusEnum::getDesc)
                .orElse(StrUtil.EMPTY);
    }

    /**
     * 判断该状态是否已经处于 End 最终状态
     * <p>
     * 主要用于一些状态更新的逻辑，如果已经是最终状态，就不再进行更新
     *
     * @param status 状态
     * @return 是否
     */
    public static boolean isEndStatus(String status) {
        return StrUtil.equalsAny(status, APPROVE.getStatus());
    }

}

